#ifndef PAJARITO_H
#define	PAJARITO_H

#include <string>
#include "Actor.h"
#include "ActoresConstantes.h"
#include "Perimetro.h"
#include "tinyxml.h"
#include "Huevo.h"

using namespace std;
using namespace TP::Juego::Arena;
using namespace TP::Juego::Arena::Utilidades;

//class Huevo;

namespace TP { namespace Juego { namespace Arena { namespace Actores {

class Pajarito : public Actor {
public:
    
    Pajarito();
    
    Pajarito(const string& pNombre);
    
    virtual ~Pajarito();
    
    virtual IColisionado* colisionar (IColisionado* pColisionado);
    
    virtual double getPoderAtaqueContraCerdito () = 0;
    
    virtual double getPoderAtaqueContraSuperficie () = 0;
    
    virtual int getPuntaje() = 0;
    
    virtual string aXML();
    
    virtual string aXML(const string& pPath);
    
    virtual void parseXML (const string& pDescriptor);

    virtual TiXmlElement* aElementoXML () = 0;
    
    virtual void deElementoXML (TiXmlElement* pElemento) = 0;    
    
    double getAlturaRebote();
    
    void setAlturaRebote(double alturaRebote);
    
protected:
    
    Perimetro* colisionarContraPerimetro (Perimetro* pPerimetro);
    
    Piso* colisionarContraPiso (Piso* pPiso);
    
    Cerdito* colisionarContraCerdito(Cerdito* pCerdito);
    
    Huevo* colisionarContraHuevo(Huevo* pHuevo);
    
    MonticuloHuevos* colisionarContraMonticuloHuevo(MonticuloHuevos* pMonticuloHuevos);
    
    Caja* colisionarContraCaja(Caja* pCaja);
    
    Fruta* colisionarContraFruta(Fruta* fruta);
    
    Pajarito* colisionarContraPajarito(Pajarito* pPajarito);
    
    double _alturaRebote;
};
}}}}
#endif	/* PAJARITO_H */